const Service = require('egg').Service;
const fs = require('fs');
const path = require('path');

class FsService extends Service {

    /**
     * 生成文件夹
     * @param {*} to 
     */
    async createFolder(to) { //文件写入
        console.log("创建文件夹====",to);
        var sep = path.sep
        var folders = path.dirname(to).split(sep);
        var p = '';
        while (folders.length) {
            p += folders.shift() + sep;
            if (!fs.existsSync(p)) {
                fs.mkdirSync(p);
            }
        }
    }

    async delPath(path) {
        // if(path.indexOf('./')!==0||path.indexOf('../')!==0){
        //     return "为了安全仅限制使用相对定位..";
        // }
        const { ctx } = this;
        if (!fs.existsSync(path)) {
            console.log("路径不存在");
            return "路径不存在";
        }
        var info = fs.statSync(path);
        if (info.isDirectory()) {//目录
            var data = fs.readdirSync(path);
            if (data.length > 0) {
                for (var i = 0; i < data.length; i++) {
                    ctx.service.fs.delPath(`${path}/${data[i]}`); //使用递归
                    if (i == data.length - 1) { //删了目录里的内容就删掉这个目录
                        ctx.service.fs.delPath(`${path}`);
                    }
                }
            } else {
                fs.rmdirSync(path);//删除空目录
            }
        } else if (info.isFile()) {
            fs.unlinkSync(path);//删除文件
        }
    }

}

module.exports = FsService;